aws configure でアクセスキーを手打ちせず aws configure import で CSV ファイルからインポートしてみた
コンバンハ、千葉(幸)です。
AWS CLI (など)を使用するためにアクセスキーを設定する際、皆さんは以下のような手順をとるのではないでしょうか。
「ひとまずaws configure
を叩く。」
$ aws configure
↑(--profile
オプションを付与すれば名前付きプロファイルへの設定となりますが、デフォルトではdefault
というプロファイルに対する設定となります。)
「各項目の入力が促されるため、必要な項目を入力していく。」
$ aws configure AWS Access Key ID [None]: #アクセスキーを入力 AWS Secret Access Key [None]: #シークレットキーを入力 Default region name [None]: ap-northeast-1 Default output format [None]:
↑(ここではアクセスキーやシークレットキーの値をコピペで入力することが多いかと思います。)
上記の操作を行うと、2つのファイルに設定が書き込まれます。
[default] aws_access_key_id=AKIAXXXXXXXXXXX #入力したアクセスキー aws_secret_access_key=YYYYYYYYYYYYYYY #入力したシークレットキー
[default] region=ap-northeast-1
これで最小限のセットアップは終わりです。そこまで複雑な手順ではありませんが、アクセスキーやシークレットキーを入力するところが少し気になるところです。
流石に「手入力して打ち間違う」というケースは滅多にないと思いますが、コピーする範囲が一文字足りない・不要なスペースを含めてしまうなどで入力ミスをする可能性はあります。また、コピペして入力する、という行為そのものが少しスマートさに欠ける気がします。
AWS CLI の v2 では CSV ファイルからインポートする手段が用意されており、その CSV はマネジメントコンソールからダウンロードしたものをそのまま使用できます。
どんな形でインポートされるものか、使い心地を試してみました。
まとめ
- IAM ユーザー作成時にダウンロードした CSV ファイルをそのままインポートできる
- IAM ユーザー名と同じプロファイル名で
~/.aws/credentials
に認証情報が追記される ~/.aws/config
には変更が加わらないので必要に応じて追記する
マネジメントコンソールからアクセスキーが記載された CSV ファイルをダウンロードする
インポートに使用する CSV は以下ヘッダーを持つ必要があります。
- User Name
- Access key ID
- Secret access key
このヘッダーを持つ CSV ファイルはもちろん自前で準備してもいいですが IAM ユーザーの作成時にダウンロードできる CSV ファイルをそのまま使用できます。
今回は以下のように3ユーザー分を一気に作成してみます。
いくつかステップを経て作成が済むと、以下のように CSV ファイルをダウンロードできます。この画面を閉じるとその後にダウンロードすることはできないため注意してください。
CSV ファイルの中身は以下のような構成になっています。必要なヘッダーが含まれていますね。(User name
の n が小文字ですが、これでも問題なく動作します。)
User name,Password,Access key ID,Secret access key,Console login link Chiba,,AKIAXXXXXXXXXXXXXXXX,YYYYYYYYYYYYYYY,https://012345678910.signin.aws.amazon.com/console Saitama,,AKIAXXXXXXXXXXXXXXXX,YYYYYYYYYYYYYYY,https://012345678910.signin.aws.amazon.com/console Kanagawa,,AKIAXXXXXXXXXXXXXXXX,YYYYYYYYYYYYYYY,https://012345678910.signin.aws.amazon.com/console
IAM ユーザーの画面からアクセスキーを作成する場合
IAM ユーザーの詳細画面の「認証情報」タブからアクセスキーの作成と CSV ファイルのダウンロードが可能ですが、こちらはそのままインポートに使用できません。
作成時に表示される以下の画面を閉じるまで、CSV ファイルをダウンロードできます。
中身は以下のようになっています。User Name
というヘッダーが含まれていないことがわかります。
Access key ID,Secret access key AKIAXXXXXXXXXXXX,YYYYYYYYYYYYYY
手で追記すればインポートには使用できますが、そこにかかる手間を考えるとaws configure で手打ちするのとそこまで変わらないかもしれません。
aws configure import を使ってみる
aws configure import のリファレンスは以下の通りです。
以下のようにシンプルな構文です。
import --csv <value> [--skip-invalid] [--profile-prefix <value>]
繰り返しとなりますが、import は AWS CLI v2 でのみ対応しています。今回使用したのは以下バージョンです。
% aws --version aws-cli/2.2.39 Python/3.8.8 Darwin/20.6.0 exe/x86_64 prompt/off
先程の IAM ユーザー作成時にダウンロードしたファイルとして/Users/chiba.yukihiro/Downloads/new_user_credentials.csv
がある状態で実行してみます。
% aws configure import --csv file:///Users/chiba.yukihiro/Downloads/new_user_credentials.csv Successfully imported 3 profile(s)
インポートが成功すると、~/.aws/credentials
の末尾に以下のようにUser name
ごとのプロファイルが追加されています。
... 略 ... [Chiba] aws_access_key_id=AKIAXXXXXXXXXXX aws_secret_access_key=YYYYYYYYYYYYYYY [Saitama] aws_access_key_id=AKIAXXXXXXXXXXX aws_secret_access_key=YYYYYYYYYYYYYYY [Kanagawa] aws_access_key_id=AKIAXXXXXXXXXXX aws_secret_access_key=YYYYYYYYYYYYYYY
インポートが終わったら元の CSV ファイルは削除しても問題ありません。手打ちするよりは多少スマートにプロファイルの設定ができました。
~/.aws/config はどうなっているか
インポート後も~/.aws/config
には何も変更が加えられていません。ここを勘違いしていましたが、~/.aws/config
に何も記載されていなくてもプロファイルとしての使用は可能です。
% aws sts get-caller-identity --profile Saitama { "UserId": "AIDAXXXXXXXXXXXXXXXXX", "Account": "012345678910", "Arn": "arn:aws:iam::012345678910:user/Saitama" }
この状態でプロファイルを指定してaws configure
を実行してみます。
% aws configure --profile Saitama AWS Access Key ID [****************3DFU]: #インポート済み AWS Secret Access Key [****************CPKM]: #インポート済み Default region name [None]: ap-northeast-1 #手動で追加 Default output format [None]:
↑ここではデフォルトリージョンを指定してみました。
この設定を経ると、~/.aws/config
に以下のように追記が行われます。
[profile Saitama] region = ap-northeast-1
プロファイル名を別のものにするには
デフォルトでは IAM ユーザー名と同じプロファイル名で認証情報が設定されました。これを別の物にしたい時があるかもしれません。
もちろんダウンロードした後の CSV ファイルを直接書き換えるのが一番柔軟ですが、プレフィックスを指定するオプションもあります。
例えば先ほどと同じファイルを指定して、--profile-prefix
オプションを指定してインポートを行います。
% aws configure import --csv file:///Users/chiba.yukihiro/Downloads/new_user_credentials.csv\ --profile-prefix prod-
以下のように指定したプレフィックスが付与されたプロファイルが作成されました。
... 略 ... [prod-Chiba] aws_access_key_id=AKIAXXXXXXXXXXX aws_secret_access_key=YYYYYYYYYYYYYYY [prod-Saitama] aws_access_key_id=AKIAXXXXXXXXXXX aws_secret_access_key=YYYYYYYYYYYYYYY [prod-Kanagawa] aws_access_key_id=AKIAXXXXXXXXXXX aws_secret_access_key=YYYYYYYYYYYYYYY
終わりに
AWS CLI のプロファイルの認証情報を CSV ファイルのインポートでセットアップしてみました。
アクセスキーの設定を行う機会はそこまで頻繁にないでしょうし、一度に複数のプロファイルをセットアップするケースも少ないと思うので、インポートならではのメリットはそこまで大きくないかもしれません。とは言えコピペで入力するよりはミスも減りますしスマートだと思うので、覚えておくと役に立つ時があるかもしれません。
ぜひお試しください。
以上、 チバユキ (@batchicchi) がお送りしました。